package geral.manager;

import geral.util.FacesUtil;

import java.io.Serializable;
import java.util.ArrayList;
import java.util.List;

import javax.ejb.EJB;
import javax.enterprise.context.ConversationScoped;
import javax.inject.Inject;
import javax.inject.Named;

import br.com.sgc.entities.geral.TipoProcedimento;
import br.com.sgc.session.GenericSession;


@Named
@ConversationScoped
public class TipoProcedimentoManager extends GenericManager implements Serializable {

	private static final long serialVersionUID = -5212514150034798773L;
	
	@EJB private GenericSession<TipoProcedimento> tipoProcedimentoSession;
	
	@Inject private UtilManager utilManager;
	
	private TipoProcedimento tipoProcedimento = new TipoProcedimento();
	
	private List<TipoProcedimento> listTipoProcedimento = new ArrayList<TipoProcedimento>();
	
private Boolean showPanelCadastro;

	
	public String list(){
		listTipoProcedimento = tipoProcedimentoSession.findAll(TipoProcedimento.class ,utilManager.getSegurancaManager().getUsuarioLogado().getClinica().getId());
		showPanelCadastro = false;
		return "formTipoProcedimento";
	}
	
	public String prepareSave(){
		showPanelCadastro = true;
		tipoProcedimento = new TipoProcedimento();
		return "formTipoProcedimento";
	}
	
	public String save(){
		try {
			tipoProcedimento.setClinica(utilManager.getSegurancaManager().getUsuarioLogado().getClinica());
			tipoProcedimentoSession.save(tipoProcedimento);
			FacesUtil.mensInfo("Tipo de Procedimento salvo com sucesso");
			tipoProcedimento = new TipoProcedimento();
			return list();
		} catch (Exception e) {
			FacesUtil.mensErro(e.getMessage());
			return null;
		}
	}
	
	public String prepareUpdate(){
		tipoProcedimento = tipoProcedimentoSession.findById(TipoProcedimento.class, tipoProcedimento.getId(), true);
		showPanelCadastro = true;
		return "formPelagem";
	}
	
	public String update(){
		try {
			tipoProcedimento.setClinica(utilManager.getSegurancaManager().getUsuarioLogado().getClinica());
			tipoProcedimentoSession.update(tipoProcedimento);
			tipoProcedimento = new TipoProcedimento();
			FacesUtil.mensInfo("Tipo de Procedimento atualizado com sucesso");
			return list();
		} catch (Exception e) {
			FacesUtil.mensErro(e.getMessage());
			return null;
		}
	}

	public GenericSession<TipoProcedimento> getTipoProcedimentoSession() {
		return tipoProcedimentoSession;
	}

	public void setTipoProcedimentoSession(
			GenericSession<TipoProcedimento> tipoProcedimentoSession) {
		this.tipoProcedimentoSession = tipoProcedimentoSession;
	}

	public TipoProcedimento getTipoProcedimento() {
		return tipoProcedimento;
	}

	public void setTipoProcedimento(TipoProcedimento tipoProcedimento) {
		this.tipoProcedimento = tipoProcedimento;
	}

	public List<TipoProcedimento> getListTipoProcedimento() {
		return listTipoProcedimento;
	}

	public void setListTipoProcedimento(List<TipoProcedimento> listTipoProcedimento) {
		this.listTipoProcedimento = listTipoProcedimento;
	}

	public Boolean getShowPanelCadastro() {
		return showPanelCadastro;
	}

	public void setShowPanelCadastro(Boolean showPanelCadastro) {
		this.showPanelCadastro = showPanelCadastro;
	}
}
